package com.penghaisoft.microwms.base.web.user.dao;

import com.penghaisoft.microwms.common.base.model.BaseUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Title: BaseUserMapper.java
 * @Description: 用户操作mapper
 * @author zxcq0
 * @date 2017/2/28 14:45
 * @version V1.0
 */
public interface BaseUserMapper {
    int deleteByPrimaryKey(String userId);

    int deleteByPrimaryKeys(List<String> userIds);

    int insert(BaseUser record);

    int insertSelective(BaseUser record);

    BaseUser selectByPrimaryKey(String userId);

    int updateByPrimaryKeySelective(BaseUser record);

    int updateByPrimaryKey(BaseUser record);

    int checkAddUnique(BaseUser condition);

    int checkUpdUnique(BaseUser condition);

    List<BaseUser> selectListByCondition(BaseUser condition);

    int selectListByConditionCount(BaseUser condition);

    BaseUser selectOneByCondition(BaseUser condition);

    List<BaseUser> queryUserAll();
    
    BaseUser checkLogin(BaseUser condition);

	int updatePwdByUser(BaseUser baseUser);

	/** 
	* @Title: queryHandLockUserCount 
	* @Description: 手持锁定用户数量查询
	* @author zhangxu 
	* @2017年9月1日:2017年9月1日:下午1:38:26
	* @param @param factoryCode
	* @param @param loginNames
	* @param @param cond
	* @param @return    
	* @return int
	* @version V0.1    
	* @throws 
	*/
	int queryHandLockUserCount(@Param("factoryCode") String factoryCode, @Param("loginNames") List<String> loginNames, @Param("entity") BaseUser cond);

	/** 
	* @Title: queryHandLockUserList 
	* @Description: 翻页查询
	* @author zhangxu 
	* @2017年9月1日:2017年9月1日:下午1:44:47
	* @param @param factoryCode
	* @param @param loginNames
	* @param @param cond
	* @param @param page
	* @param @param rows
	* @param @return    
	* @return List<BaseUser>
	* @version V0.1    
	* @throws 
	*/
	List<BaseUser> queryHandLockUserList(@Param("factoryCode") String factoryCode, @Param("loginNames") List<String> loginNames, @Param("entity") BaseUser cond, @Param("page") int page,
                                         @Param("rows") int rows);

	/** 
	* @Title: updateByLoginName 
	* @Description: 根据用户名修改东西
	* @author zhangxu 
	* @2017年9月26日:2017年9月26日:下午12:11:22
	* @param @param cond
	* @param @return    
	* @return int
	* @version V0.1    
	* @throws 
	*/
	int updateByLoginName(@Param("entity") BaseUser cond);

	/**
	 * 查询工厂下的用户
	 * @param factoryCode
	 * @return
	 */
	List<BaseUser> queryUsersUnderFactory(@Param("factoryCode") String factoryCode);
	
	/**
	 * cosmo-im添加查询工厂下的所有用户(带分页信息)
	 * @param page
	 * @param rows
	 * @param factoryCode
	 * @return
	 */
	List<BaseUser> queryUsersByFactory(@Param("page") int page,
                                       @Param("rows") int rows, @Param("factoryCode") String factoryCode, @Param("entity") BaseUser baseUser);

	/**
	 * 查询某个产业下的用户
	 * @param cond
	 * @return
	 */
	List<BaseUser> queryUserUnderGroup(@Param("entity") BaseUser cond);

	List<BaseUser> queryByAny(@Param("entity")BaseUser condition);
}